草庐IT

C++ STL : Custom sorting one vector based on contents of another

全部标签

c++ - 在 STL 中将列表元素移动到末尾

我已经有了CDrawObject*的列表指针std::listelements;如何将某些元素移动到列表末尾。我看到了STLAlgorithmsReference但我没有找到这个操作。我该怎么办? 最佳答案 使用列表方法splice()voidlist::splice(iteratorposition,list&x,iteratori);将迭代器i从列表x移动到当前列表的位置“位置”因此把它移到最后放x.splice(x.end(),x,iter);(它们可以是同一个列表,也可以是不同的列表,只要移动项目的列表具有相同的类型,T和A

java - C++(STL)与Java中的迭代器,有概念上的区别吗?

在离开一段时间后,我将返回C++,并试图清除旧瓜的灰尘。在Java中,Iterator是具有以下方法的容器的接口(interface):hasNext()、next()和remove()。hasNext()的存在意味着它对被遍历的容器有限制的概念。//withanIteratorIteratoriter=trees.iterator();while(iter.hasNext()){System.out.println(iter.next());}在C++标准模板库中,迭代器似乎表示支持operator++和operator==的数据类型或类,但没有限制的概念内置,因此在进入下一个项目之

c++ - STL有什么了不起的?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭9年前.我是一名尝试学习C++的Java开发人员。我多次在互联网上(包括StackOverflow)读到STL是您可以在任何语言中获得的最好的集合库。(对不起,我没有任何引用)但是,在学习了一些STL之后,我真的看不出是什么让STL如此特别。您能否介绍一下STL与其他语言的集合库的不同之处,并使其成为最好的集合库? 最佳答案

c++ - C++11 STL 中的所有内容都是用户可实现的吗?

我知道像这样的库,和即使标准库中不存在它们也可以由用户实现。但是C++11STL中的某些类或函数是否只是“编译器魔法”,无法手动实现?编辑STL是指标准模板库,它不需要额外的链接。 最佳答案 如果您指的是源自AlexanderStepanov的标准模板库的标准库的一部分,那么您可以在没有任何编译器“魔法”的情况下实现所有这些(即,您只需要普通功能即可)其他C++标准所要求的)。算法在迭代器上运行。他们需要的迭代器操作由他们操作的迭代器类定义(见下文)。该算法简单地执行正常的操作,例如分配给元素和交换元素。所有迭代器都提供一些操作,例

c++ - STL 绳索 - 何时何地使用

我想知道在什么情况下你会在另一个STL容器上使用绳子? 最佳答案 Ropesareascalablestringimplementation:theyaredesignedforefficientoperationthatinvolvethestringasawhole.Operationssuchasassignment,concatenation,andsubstringtaketimethatisnearlyindependentofthelengthofthestring.UnlikeCstrings,ropesareare

c++ - 如何初始化本身具有非平凡构造函数的对象的 STL vector ?

假设我有以下类(class):classMyInteger{private:intn_;public:MyInteger(intn):n_(n){};//MORESTUFF};假设这个类没有默认的平凡构造函数MyInteger().我必须始终提供int出于某种原因对其进行初始化。然后假设在我的代码中某处我需要一个vector.如何初始化每个MyIntegervector中的组件?我有两种情况(可能解决方案是一样的,但我还是会说明它们),一个函数内部的普通变量:intmain(){vectorfoo(10);//howdoIinitializeeach//MyIntegerfieldof

c++ - 在容器上的循环中同时访问更多元素的 STL 方法

是否可以重写这个原始循环:vectorv{...};for(size_ti=1;i或者更神秘的:for(autoi=v.begin()+1;i(和类似的,也许也可以访问v[i-2],...)以更STLish的方式?是否有其他形式与上述形式相同或更好(无论是风格还是性能)? 最佳答案 我能想象到的最STLish方式:std::partial_sum(std::begin(v),std::end(v),std::begin(v),std::multiplies());例子:#include#include#include#include

c++ - 哪个是查找速度最快的 STL 容器?

好吧,作为前言,我需要缓存一个相对较小的很少修改数据的子集,以避免出于性能原因频繁查询数据库。此数据在只读意义上被大量使用,因为它经常被其他表中更大的数据集引用。我已经编写了一个类,它能够在内存中存储有问题的两个表的全部内容,同时监听提交更改以及用于更新缓存对象的线程安全回调机制。我当前的实现有两个std::vectors一个用于每个表的元素。该类提供了对每个vector的访问以及通过std::find、std::find_if搜索表数据的特定元素的便捷方法,等等有谁知道是否在std上使用std::list、std::set或std::map::vector进行搜索会更好吗?大多数情况

c++ - STL中map和hashmap有什么区别

这个问题在这里已经有了答案:mapvs.hash_mapinC++(6个回答)关闭9年前。在C++STL中,有两个map,map和hashmap。有谁知道它们的主要区别吗? 最佳答案 map使用红黑树作为数据结构,所以你放入的元素是排序好的,插入/删除是O(log(n))。至少需要实现的元素operator.hashmap使用哈希,所以元素是未排序的,插入/删除是O(1)。元素至少需要实现operator==你需要一个哈希函数。 关于c++-STL中map和hashmap有什么区别,我们

c++ - 什么时候应该使用 STL 算法而不是使用您自己的算法?

我经常使用STL容器,但从未使用过与STL容器一起使用的STL算法。使用STL算法的一个好处是它们提供了一种去除循环的方法,从而降低了代码逻辑的复杂性。还有其他好处我不会在这里列出。我从未见过使用STL算法的C++代码。从网页文章中的示例代码到开源项目,我还没有看到它们的用途。它们的使用频率是否比看起来更高? 最佳答案 简短回答:总是。长答案:总是。这就是他们的目的。它们针对与STL容器一起使用进行了优化,并且比您自己编写的任何内容都更快、更清晰、更惯用。您应该考虑自行推出的唯一情况是,如果您可以明确表达STL算法无法满足的非常具体